package org.monster.context.reader.tag;

import java.util.List;

/**
 * xml服务者
 *
 * @author Monster
 */
public class XmlServlet {

    /**
     * 类路径
     */
    private String classPath;
    /**
     * url映射
     */
    private String uriMapping;

    /**
     * 构造方法
     *
     * @param classPath  classPath
     * @param uriMapping url映射
     */
    public XmlServlet(String classPath, String uriMapping) {
        super();
        this.classPath = classPath;
        this.uriMapping = uriMapping;
    }

    /**
     * 构造方法
     */
    public XmlServlet() {
        super();
    }

    /**
     * 获取 类路径
     *
     * @return 类路径
     */
    public String getClassPath() {
        return classPath;
    }

    /**
     * 设置 类路径
     *
     * @param classPath 类路径
     */
    public void setClassPath(String classPath) {
        this.classPath = classPath;
    }

    /**
     * 获取 url映射
     *
     * @return url映射
     */
    public String getUriMapping() {
        return uriMapping;
    }

    /**
     * 设置 url映射
     *
     * @param uriMapping url映射
     */
    public void setUriMapping(String uriMapping) {
        this.uriMapping = uriMapping;
    }

    /**
     * 值比较
     *
     * @param uriMapping url映射
     * @return 布尔
     */
    public boolean valueEquals(String uriMapping) {
        if (uriMapping == null) {
            return false;
        } else if (this.getUriMapping().equals(uriMapping)) {
            return true;
        }
        return false;

    }

    /**
     * 获取xml服务者
     * 匹配指定URI映射的XMLServlet对象（web.xml信息）
     *
     * @param xmlFile    xml文件
     * @param uriMapping url映射
     * @return
     */
    public XmlServlet getXMLServlet(XmlFile xmlFile, String uriMapping) {
        if (xmlFile == null) {
            throw new NullPointerException();
        } else if (uriMapping == null) {
            throw new NullPointerException("Not avaliable pointer!");
        }
        List<XmlServlet> xmlServlets = xmlFile.getXmlFormat();
        for (XmlServlet xmlServlet : xmlServlets) {
            if (xmlServlet.valueEquals(uriMapping)) {
                return xmlServlet;
            }
        }
        return null;
    }

}
